window.onload = function () {
  editor.setOpt({
    emotionLocalization: false
  });

  emotion.SmileyPath = editor.options.emotionLocalization === true ? 'images/' : "http://img.baidu.com/hi/";
  emotion.SmileyBox = createTabList(emotion.tabNum);
  emotion.tabExist = createArr(emotion.tabNum);

  initImgName();
  initEvtHandler("tabHeads");
};

function initImgName() {
  for (var pro in emotion.SmilmgName) {
    var tempName = emotion.SmilmgName[pro],
      tempBox = emotion.SmileyBox[pro],
      tempStr = "";

    if (tempBox.length) return;
    for (var i = 1; i <= tempName[1]; i++) {
      tempStr = tempName[0];
      if (i < 10) tempStr = tempStr + '0';
      tempStr = tempStr + i + '.gif';
      tempBox.push(tempStr);
    }
  }
}

function initEvtHandler(conId) {
  var tabHeads = $G(conId);
  for (var i = 0, j = 0; i < tabHeads.childNodes.length; i++) {
    var tabObj = tabHeads.childNodes[i];
    if (tabObj.nodeType == 1) {
      domUtils.on(tabObj, "click", (function (index) {
        return function () {
          switchTab(index);
        };
      })(j));
      j++;
    }
  }
  switchTab(0);
  $G("tabIconReview").style.display = 'none';
}

function InsertSmiley(url, evt) {
  var obj = {
    src: editor.options.emotionLocalization ? editor.options.UEDITOR_HOME_URL + "dialogs/emotion/" + url : url
  };
  obj._src = obj.src;
  editor.execCommand('insertimage', obj);
  if (!evt.ctrlKey) {
    dialog.popup.hide();
  }
}

function switchTab(index) {

  autoHeight(index);
  if (emotion.tabExist[index] == 0) {
    emotion.tabExist[index] = 1;
    createTab('tab' + index);
  }
  //获取呈现元素句柄数组
  var tabHeads = $G("tabHeads").getElementsByTagName("span"),
    tabBodys = $G("tabBodys").getElementsByTagName("div"),
    i = 0, L = tabHeads.length;
  //隐藏所有呈现元素
  for (; i < L; i++) {
    tabHeads[i].className = "";
    tabBodys[i].style.display = "none";
  }
  //显示对应呈现元素
  tabHeads[index].className = "focus";
  tabBodys[index].style.display = "block";
}

function autoHeight(index) {
  var iframe = dialog.getDom("iframe"),
    parent = iframe.parentNode.parentNode;
  switch (index) {
    case 0:
      iframe.style.height = "380px";
      parent.style.height = "392px";
      break;
    case 1:
      iframe.style.height = "220px";
      parent.style.height = "232px";
      break;
    case 2:
      iframe.style.height = "260px";
      parent.style.height = "272px";
      break;
    case 3:
      iframe.style.height = "300px";
      parent.style.height = "312px";
      break;
    case 4:
      iframe.style.height = "140px";
      parent.style.height = "152px";
      break;
    case 5:
      iframe.style.height = "260px";
      parent.style.height = "272px";
      break;
    case 6:
      iframe.style.height = "230px";
      parent.style.height = "242px";
      break;
    default:

  }
}


function createTab(tabName) {
  var faceVersion = "?v=1.1", //版本号
    tab = $G(tabName), //获取将要生成的Div句柄
    imagePath = emotion.SmileyPath + emotion.imageFolders[tabName], //获取显示表情和预览表情的路径
    positionLine = 11 / 2, //中间数
    iWidth = iHeight = 35, //图片长宽
    iColWidth = 3, //表格剩余空间的显示比例
    tableCss = emotion.imageCss[tabName],
    cssOffset = emotion.imageCssOffset[tabName],
    textHTML = ['<table class="smileytable">'],
    i = 0, imgNum = emotion.SmileyBox[tabName].length, imgColNum = 11, faceImage,
    sUrl, realUrl, posflag, offset, infor;

  for (; i < imgNum;) {
    textHTML.push('<tr>');
    for (var j = 0; j < imgColNum; j++, i++) {
      faceImage = emotion.SmileyBox[tabName][i];
      if (faceImage) {
        sUrl = imagePath + faceImage + faceVersion;
        realUrl = imagePath + faceImage;
        posflag = j < positionLine ? 0 : 1;
        offset = cssOffset * i * (-1) - 1;
        infor = emotion.SmileyInfor[tabName][i];

        textHTML.push('<td  class="' + tableCss + '"   border="1" width="' + iColWidth + '%" style="border-collapse:collapse;" align="center"  bgcolor="transparent" onclick="InsertSmiley(\'' + realUrl.replace(/'/g, "\\'") + '\',event)" onmouseover="over(this,\'' + sUrl + '\',\'' + posflag + '\')" onmouseout="out(this)">');
        textHTML.push('<span>');
        textHTML.push('<img  style="background-position:left ' + offset + 'px;" title="' + infor + '" src="' + emotion.SmileyPath + (editor.options.emotionLocalization ? '0.gif" width="' : 'default/0.gif" width="') + iWidth + '" height="' + iHeight + '"></img>');
        textHTML.push('</span>');
      } else {
        textHTML.push('<td width="' + iColWidth + '%"   bgcolor="#FFFFFF">');
      }
      textHTML.push('</td>');
    }
    textHTML.push('</tr>');
  }
  textHTML.push('</table>');
  textHTML = textHTML.join("");
  tab.innerHTML = textHTML;
}

function over(td, srcPath, posFlag) {
  td.style.backgroundColor = "#ACCD3C";
  $G('faceReview').style.backgroundImage = "url(" + srcPath + ")";
  if (posFlag == 1) $G("tabIconReview").className = "show";
  $G("tabIconReview").style.display = 'block';
}

function out(td) {
  td.style.backgroundColor = "transparent";
  var tabIconRevew = $G("tabIconReview");
  tabIconRevew.className = "";
  tabIconRevew.style.display = 'none';
}

function createTabList(tabNum) {
  var obj = {};
  for (var i = 0; i < tabNum; i++) {
    obj["tab" + i] = [];
  }
  return obj;
}

function createArr(tabNum) {
  var arr = [];
  for (var i = 0; i < tabNum; i++) {
    arr[i] = 0;
  }
  return arr;
}

